package com.ltkj.ticket.service.impl;

import com.ltkj.common.core.exception.ServiceException;
import com.ltkj.common.core.utils.DateUtils;
import com.ltkj.common.core.utils.StringUtils;
import com.ltkj.common.core.utils.bean.BeanUtils;
import com.ltkj.common.security.utils.SecurityUtils;
import com.ltkj.system.api.RemoteFileService;
import com.ltkj.system.api.domain.CommAttachment;
import com.ltkj.ticket.domain.TicOtherBase;
import com.ltkj.ticket.domain.dto.TicOtherBaseUpdateDTO;
import com.ltkj.ticket.domain.vo.TicOtherBaseByIdVO;
import com.ltkj.ticket.mapper.TicOtherBaseMapper;
import com.ltkj.ticket.service.ITicOtherBaseService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * （景区、场馆、活动基本信息）Service业务层处理
 * 
 * @author ruoyi
 * @date 2023-08-29
 */
@Service
public class TicOtherBaseServiceImpl implements ITicOtherBaseService 
{
    private static final Logger log = LoggerFactory.getLogger(TicOtherBaseServiceImpl.class);
    @Autowired
    private TicOtherBaseMapper ticOtherBaseMapper;
    @Autowired
    private RemoteFileService remoteFileService;

    /**
     * 查询（景区、场馆、活动基本信息）
     * 
     * @param ticOtherId （景区、场馆、活动基本信息）主键
     * @return （景区、场馆、活动基本信息）
     */
    @Override
    public TicOtherBase selectTicOtherBaseByTicOtherId(Long ticOtherId)
    {
        return ticOtherBaseMapper.selectTicOtherBaseByTicOtherId(ticOtherId);
    }


    @Override
    public TicOtherBaseByIdVO selectTicOtherBaseByTicOtherIdBusess(Long ticOtherId) {

        TicOtherBase ticOtherBase = ticOtherBaseMapper.selectTicOtherBaseByTicOtherId(ticOtherId);
        TicOtherBaseByIdVO ticOtherBaseByIdVO = BeanUtils.copy(ticOtherBase, TicOtherBaseByIdVO.class);

        //根据业务id和code查询图片
        List<CommAttachment> ticOtherBaseImg = remoteFileService.selectAtta(ticOtherBase.getTicOtherId(), "tic_other_base_img");
        ticOtherBaseByIdVO.setCommAttachmentList(ticOtherBaseImg);
        return ticOtherBaseByIdVO;
    }

    /**
     * 查询（景区、场馆、活动基本信息）列表
     * 
     * @param ticOtherBase （景区、场馆、活动基本信息）
     * @return （景区、场馆、活动基本信息）
     */
    @Override
    public List<TicOtherBase> selectTicOtherBaseList(TicOtherBase ticOtherBase)
    {
        ticOtherBase.setIsDel("0");
        return ticOtherBaseMapper.selectTicOtherBaseList(ticOtherBase);
    }

    /**
     * 新增（景区、场馆、活动基本信息）
     * 
     * @param ticOtherBase （景区、场馆、活动基本信息）
     * @return 结果
     */
    @Override
    @Transactional
    public int insertTicOtherBase(TicOtherBaseUpdateDTO ticOtherBaseUpdateDTO)
    {
        ticOtherBaseUpdateDTO.setCreateTime(DateUtils.getNowDate());
        ticOtherBaseUpdateDTO.setIsDel("0");
        String username = SecurityUtils.getUsername();
        ticOtherBaseUpdateDTO.setCreateBy(username);
        int i = ticOtherBaseMapper.insertTicOtherBase(ticOtherBaseUpdateDTO);
        //上传文件调用fgin接口

        remoteFileService.updateAttaData(ticOtherBaseUpdateDTO.getTicOtherId(),"tic_other_base_img",ticOtherBaseUpdateDTO.getAttaIds());
        return i;
    }

    /**
     * 修改（景区、场馆、活动基本信息）
     * 
     * @param ticOtherBase （景区、场馆、活动基本信息）
     * @return 结果
     */
    @Override
    public int updateTicOtherBase(TicOtherBaseUpdateDTO ticOtherBaseUpdateDTO)
    {
        TicOtherBase ticOtherBase = BeanUtils.copy(ticOtherBaseUpdateDTO, TicOtherBase.class);
        ticOtherBase.setUpdateTime(DateUtils.getNowDate());
        String username = SecurityUtils.getUsername();
        ticOtherBase.setUpdateBy(username);
        int i = ticOtherBaseMapper.updateTicOtherBase(ticOtherBase);
        if(StringUtils.isNotEmpty(ticOtherBaseUpdateDTO.getAttaIds())){
            //先删除原有图片
            remoteFileService.deletaAttaByInfo("tic_other_base_img",ticOtherBase.getTicOtherId());
            //后上传
            remoteFileService.updateAttaData(ticOtherBase.getTicOtherId(),"tic_other_base_img",ticOtherBaseUpdateDTO.getAttaIds());
        }

        return i;
    }

    /**
     * 批量删除（景区、场馆、活动基本信息）
     * 
     * @param ticOtherIds 需要删除的（景区、场馆、活动基本信息）主键
     * @return 结果
     */
    @Override
    public int deleteTicOtherBaseByTicOtherIds(Long[] ticOtherIds)
    {
        int num=0;
        String username = SecurityUtils.getUsername();
        if(null!=ticOtherIds&&ticOtherIds.length>0){
            for(int i=0;i<ticOtherIds.length;i++){
                    //查询信息
                TicOtherBase ticOtherBase = ticOtherBaseMapper.selectTicOtherBaseByTicOtherId(ticOtherIds[i]);
                if( StringUtils.isNotNull(ticOtherBase)){
                    ticOtherBase.setUpdateTime(DateUtils.getNowDate());
                    ticOtherBase.setUpdateBy(username);
                    ticOtherBase.setIsDel("1");
                    ticOtherBaseMapper.updateTicOtherBase(ticOtherBase);
                    num++;
                }
            }
            return num;

        }else {
            log.info("批量删除（景区、场馆、活动基本信息）信息未查询到信息");
            throw new ServiceException("批量删除（景区、场馆、活动基本信息）信息未查询到信息 ");
        }
    }

    /**
     * 删除（景区、场馆、活动基本信息）信息
     * 
     * @param ticOtherId （景区、场馆、活动基本信息）主键
     * @return 结果
     */
    @Override
    public int deleteTicOtherBaseByTicOtherId(Long ticOtherId)
    {
        //查询信息
        TicOtherBase ticOtherBase = ticOtherBaseMapper.selectTicOtherBaseByTicOtherId(ticOtherId);

        if( StringUtils.isNotNull(ticOtherBase)){
            ticOtherBase.setUpdateTime(DateUtils.getNowDate());
            String username = SecurityUtils.getUsername();
            ticOtherBase.setUpdateBy(username);
            ticOtherBase.setIsDel("1");
            return ticOtherBaseMapper.updateTicOtherBase(ticOtherBase);
        }else {
            log.info("删除（景区、场馆、活动基本信息）信息未查询到信息");
            throw new ServiceException("删除（景区、场馆、活动基本信息）信息未查询到信息 ");
        }


    }
}
